package com.itheima.d2_recursion;

/**
 * 目标：认识一下递归的形式。
 *
 * 什么是方法递归？
 * 递归是一种算法，在程序设计语言中广泛应用。
 * 从形式上说：方法调用自身的形式称为方法递归（ recursion）。
 * 递归的形式
 * 直接递归：方法自己调用自己。
 * 间接递归：方法调用其他方法，其他方法又回调方法自己。
 * 使用方法递归时需要注意的问题：
 * 递归如果没有控制好终止，会出现递归死循环，导致栈内存溢出错误。
 */
public class RecursionTest1 {
    public static void main(String[] args) {
        //test1();    //报错：StackOverflowError，栈内存溢出
    }

    // 直接方法递归
    public static void test1(){
        System.out.println("----test1---");
        test1(); // 直接方法递归
    }

    // 间接方法递归
    public static void test2(){
        System.out.println("---test2---");
        test3();
    }

    public static void test3(){
        test2(); // 间接递归
    }
}
